package autotest.test;

import junit.framework.TestCase;
import autotest.AutoTest;

/**
 * Classe de test des fonctionnalités de l'AutoTest.
 * <p>
 * Cette première classe test la méthode statique
 * {@link autotest.AutoTest#getNomTypeClassesATester(Class)}.
 * 
 * @author gnpt
 */
public class AutoTestTest1 extends TestCase {

	private AutoTest autotest = null;

	/**
	 * @see junit.framework.TestCase#setUp()
	 */
	@Override
	protected void setUp() throws Exception {
		super.setUp();
		this.autotest = AutoTest.instance();

	}

	/**
	 * Test de la résolution avec une classe proche (en mémoire).
	 */
	public void testGetNomTypeClassesATester1() {
		Class<?> c = autotest.AutoTest.class;

		String res = this.autotest.getNomTypeClassesATester(c);

		assertEquals("autotest.test.AutoTestTest", res);
	}

	/**
	 * Test de la résolution avec une classe plus lointaine (pas en mémoire
	 * (normalement) mais dans le Class-Path).
	 */
	public void testGetNomTypeClassesATester2() {
		Class<?> c;
		try {
			c = this.getClass().getClassLoader().loadClass(
					"junit.framework.Test");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			return;
		}

		String res = this.autotest.getNomTypeClassesATester(c);

		assertEquals("junit.framework.test.TestTest", res);
	}

	/**
	 * Test de la résolution avec une classe de l'API Java.
	 */
	public void testGetNomTypeClassesATester3() {
		Class<?> c = String.class;

		String res = this.autotest.getNomTypeClassesATester(c);

		assertEquals("java.lang.test.StringTest", res);
	}

}
